Mise à jour le 09/12/2021
Lancer un programme en arrière plan

Lancer un programme en arrière plan


Contexte : vous souhaitez lancer un programme sur un linux distant (serveur privé / VM) accessible depuis SSH. Or, vous savez que ce programme peut prendre un peu de temps pour s'executer et vous souhaitez vous déconnecter du serveur, soit parce que vous devez éteindre l'ordinateur Client, soit parce que votre connexion internet est instable.

La solution à ce problème est de faire tourner l'application en tâche de fond. C'est déjà ce qu'il se passe pour beaucoup d'application (tout ce qui tourne à travers les services par exemple).

1. L'application screen

screen permet de créer une session qui peut être partagé d'un accès SSH à un autre.

1.1 Lancer screen

Executer cette commande :

1.1.1 Créer une nouvelle session

screen -S nom_de_la_session


1.1.2 Lancer une commande

Ceci ouvre une nouvelle session, on peut y taper une commande synchrone ou non :

sleep 4555555;


1.1.3 Quitter la session

Il y a plusieurs moyens de quitter la session dont voici les deux principaux :
- cltr+a suivi de la touche d
- fermer le terminal

1.1.4 Afficher les sessions screen

Lancer cette commande pour voir tous les screens :

screen -list


1.1.5 Revenir à la session

Se reconnecter au serveur, puis taper cette commande

screen -r nom_de_la_session


📖️️Source: https://doc.ubuntu-fr.org/screen


2. L'application nohup

Le nohup combiné au symbole & permet d'avoir un effet similaire : une tâche est executée en arrière plan indépendante de la déconnexion de l'utilisateur. Elle continuera de tourner même si l'utilisateur se déconnecte, volontairement ou non.

Le problème étant que si la tâche lancée fait un stdout pendant son traitement (à travers plusieurs echo par exemple), on ne peut plus les voir simplement (il faut alors redigirer cette sortie sur un fichier afin d'y avoir accès). En utilisant screen, on évite de faire une redirection dans un fichier car on peut revenir "dans l'execution" de la tâche.

nohup mon_programme &